﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace shopLinhOnline.Models.DAO
{
    public class SanPhamDAO
    {
        private ShopOnlineDataContext db = new ShopOnlineDataContext();

        /// <summary>
        /// Lấy danh sách các sản phẩm chưa bị xóa
        /// danh sách sản phẩm lấy được sắp xếp giảm dần theo thời gian
        /// </summary>
        /// <returns></returns>
        public List<SanPham> GetAll()
        {
            List<SanPham> lstResult = new List<SanPham>();
            lstResult = db.SanPhams.Where(p => p.Xoa == false).ToList().OrderByDescending(p => p.NgayDang).ToList();
            return lstResult;
        }
        /// <summary>
        /// Lấy đối tượng sản phẩm theo mã
        /// </summary>
        /// <param name="_id">mã sản phẩm</param>
        /// <returns></returns>
        public SanPham SelectByPrimarykey(int _id)
        {
            SanPham objResult = null;
            objResult = db.SanPhams.Where(p => p.ID == _id).FirstOrDefault();
            return objResult;
        }
        /// <summary>
        /// Thêm mới một đối tượng sản phẩm
        /// </summary>
        /// <param name="_obj">đối tượng sản phẩm cần thêm</param>
        /// <returns></returns>
        public int Insert(SanPham _obj)
        {
            int ID = -1;
            db.SanPhams.InsertOnSubmit(_obj);
            try {
                db.SubmitChanges();
                ID = _obj.ID;
            }
            catch { }
            
            return ID;
        }

        /// <summary>
        /// Cập nhật đối tượng sản phẩm
        /// </summary>
        /// <param name="_obj">đối tượng sản phẩm cần cập nhật</param>
        /// <returns></returns>
        public bool Update(SanPham _obj)
        {
            bool isSuccess = false;
            SanPham info = db.SanPhams.Where(p => p.ID == _obj.ID).FirstOrDefault();
            if (info != null)
            {
                info.Ten = _obj.Ten;
                info.NgayDang = _obj.NgayDang;
                info.SoLuong = _obj.SoLuong;
                info.DonGiaBan = _obj.DonGiaBan;
                info.DonGiaNhap = _obj.DonGiaNhap;
                info.Mota = _obj.Mota;
                info.Xoa = _obj.Xoa;
                try
                {
                    db.SubmitChanges();
                    isSuccess = true;
                }
                catch { }

            }
            return isSuccess;
        }
        /// <summary>
        /// Xóa sản phẩm
        /// </summary>
        /// <param name="_id">mã sản phẩm cần xóa</param>
        /// <returns></returns>
        public bool Delete(int _id)
        {
            bool isSuccess = false;
            SanPham info = db.SanPhams.Where(p => p.ID == _id).FirstOrDefault();
            if (info != null)
            {
                info.Xoa = true;//cập nhật trạng thái xóa.
                try {
                    db.SubmitChanges();

                    //xóa danh sách các hình liên quan
                    List<HinhSanPham> lstHinh = DAOManagement.HinhSanPham_GetAllBySanPhamID(_id);
                    if (lstHinh.Count > 0)
                    { 
                        //xóa các hình của sản phẩm này.
                        foreach (HinhSanPham item in lstHinh)
                        {
                            DAOManagement.HinhSanPham_Delete(item.ID);
                        }
                    }

                    isSuccess = true;
                }
                catch { }
                
            }
            return isSuccess;
        }
    }
}